#include <iostream>
#include <functional>
#include <set>
#if 0
bool IsGreaterThan(int number)
{
    return number > 3;
}

bool func(int number, int n)
{
    return number > 3 && number % n == 0;
}
#endif


//仿函数：通过重载（）让类的对象有一种类似于函数调用的形式。
class Func
{
public:
    Func(int n):n(n){}
    bool operator()(int num)
    {
        return num > 3 && num % n;
    }
private:
    int n;
};


int Count(int* num, int size, Func f)
{
    int count = 0;
    for(int i = 0; i < size; i++)
    {
        if(f(num[i]) == true)
        {
            count++;
        }
    }
    return count;
}

int main()
{
    std::set<int, std::greater<int>> s;
    s.insert(1);
    s.insert(2);
    s.insert(3);

    for(auto ite = s.begin(); ite != s.end(); ite++)
    {
        std::cout << *ite << std::endl;
    }

    return 0;
}